package com.banyou.banyou.util;

import android.graphics.drawable.Drawable;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;


import com.banyou.banyou.MainApplication;
import com.banyou.banyou.R;

import static com.banyou.banyou.util.SnackBarUtil.Image.FAIL;
import static com.banyou.banyou.util.SnackBarUtil.Image.SUCCESS;
import static com.banyou.banyou.util.SnackBarUtil.Image.WARN;

/**
 * ----------Dragon be here!----------/
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃神兽保佑
 * 　　　　┃　　　┃代码无BUG！
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━神兽出没━━━━━━
 * 项目名称：PinWheelMedipcal
 * 包名:com.yyxk.pinwheelmedical.util
 * 类描述：
 * 创建人：LX
 * 创建时间：2017/5/2 上午10:38
 * 修改人：LX
 * 修改时间：2017/5/2 上午10:38
 * 修改备注：
 */
public class SnackBarUtil {

    public enum Image {
        WARN, SUCCESS, FAIL;
    }

    /**
     * 带有重试按钮的SnackBar
     *
     * @param text
     */
    public static void makeSnackBarWithRetry(String text) {
        makeSnackBarWithRetry(text, MyActivityManager.getInstance().getLastActivity().getWindow().getDecorView());
    }

    /**
     * 带有重试按钮的SnackBar
     *
     * @param text
     */
    public static void makeSnackBarWithRetry(String text, View view) {
        Snackbar snackbar = Snackbar.make(MyActivityManager.getInstance().getLastActivity().getWindow().getDecorView(), text, Snackbar.LENGTH_LONG);
//        snackbar.setAction("重试", new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                RetrofitHelp.reToSubscrive();
//            }
//        });

        snackbar.setActionTextColor(MainApplication.getContext().getResources().getColor(R.color.colorAccent));
        snackbar.setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                System.gc();
            }
        });
        addWarnIcon(snackbar, WARN);
        snackbar.show();
    }

    /**
     * 增加一个警告icon
     *
     * @param snackbar
     */
    private static void addWarnIcon(Snackbar snackbar, Image image) {
        TextView textView = (TextView) snackbar.getView().findViewById(R.id.snackbar_text);
        Drawable d = null;
        switch (image) {
            case WARN:
                d = ContextCompat.getDrawable(MainApplication.getContext(), R.drawable.warn);
                break;
            case SUCCESS:
                d = ContextCompat.getDrawable(MainApplication.getContext(), R.drawable.success);
                break;
            case FAIL:
                d = ContextCompat.getDrawable(MainApplication.getContext(), R.drawable.fail);
                break;
        }
        d.setBounds(0, 0, d.getMinimumWidth(), d.getMinimumHeight());
        textView.setCompoundDrawables(d, null, null, null);
        textView.setCompoundDrawablePadding(FontDisplayUtil.dip2px(MainApplication.getContext(), 10));
        textView.setGravity(Gravity.CENTER);
    }

    /**
     * 短时间的警告SnackBar
     *
     * @param text
     */
    public static void makeSnackBar(String text) {
        makeSnackBar(text, MyActivityManager.getInstance().getLastActivity().getWindow().getDecorView());
    }

    /**
     * 短时间的警告SnackBar
     *
     * @param text
     * @param view
     */
    public static void makeSnackBar(String text, View view) {
        Snackbar snackbar = Snackbar.make(view, text, Snackbar.LENGTH_SHORT);
        snackbar.setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                System.gc();
            }
        });
        addWarnIcon(snackbar, WARN);
        snackbar.show();
    }


    /**
     * 短时间的完成SnackBar
     *
     * @param text   文本
     * @param finish 是否为完成,
     */
    public static void makeSnackBar(String text, boolean finish) {
        Snackbar snackbar = Snackbar.make(MyActivityManager.getInstance().getLastActivity().getWindow().getDecorView(), text, Snackbar.LENGTH_SHORT);
        snackbar.setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                System.gc();
            }
        });
        if (!finish) {
            addWarnIcon(snackbar, FAIL);
        } else {
            addWarnIcon(snackbar, SUCCESS);
        }
        snackbar.show();
    }

    /**
     * 长时间的完成SnackBar
     *
     * @param text   文本
     * @param finish 是否为完成,
     */
    public static void makeLongSnackBar(String text, boolean finish) {
        Snackbar snackbar = Snackbar.make(MyActivityManager.getInstance().getLastActivity().getWindow().getDecorView(), text, Snackbar.LENGTH_LONG);
        snackbar.setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {

                super.onDismissed(snackbar, event);
                System.gc();
            }
        });
        if (!finish) {
            addWarnIcon(snackbar, FAIL);
        } else {
            addWarnIcon(snackbar, SUCCESS);
        }
        snackbar.show();
    }

    /**
     * 长时间的警告SnackBar
     *
     * @param text
     */
    public static void makeLongSnackBar(String text) {
        Snackbar snackbar = Snackbar.make(MyActivityManager.getInstance().getLastActivity().getWindow().getDecorView(), text, Snackbar.LENGTH_LONG);
        snackbar.setCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                System.gc();
            }
        });
        addWarnIcon(snackbar, WARN);
        snackbar.show();
    }


}
